約 4,069,153 件
https://w.atwiki.jp/inariokami3/pages/13.html
日本語を入力するには トップページへもどる
https://w.atwiki.jp/sevenlives/pages/897.html
デプロイメント・ディスクリプタ?
https://w.atwiki.jp/m_shige1979/pages/684.html
Servlet 「Javaリソース src」のディレクトリより右クリックしてパッケージを作成 パッケージ名を設定 作成したパッケージ名をクリックして、サーブレットを新規作成する サーブレットの情報を入力 初期化パラメータを「追加」 「名前」、「値」を設定 URLマッピングを編集する パターンを編集する 変更された値を確認 必要なスタブのみ用意 ひな形のサーブレットを編集 実行ボタン押下 既存のサーバを選択 「終了」を押下 サーバの再始動を行う 正しく表示されていることを確認
https://w.atwiki.jp/javaapl/pages/16.html
ウェブ(クライアント側) ウェブブラウザでJavaアプレットを実行する技術は、広く使われている。 Javaアプレットは、ブラウザがウェブページ内でアニメーションの表示やマウスによるインタラクティブな操作を可能とする技術である。 簡単でインタラクティブなアニメーション用には、JavaアプレットよりもAdobe Flash を採用する事例が多い。 この分野においては、最近では Ajax も普及しつつある。 ウェブ(サーバ側) [編集] 現在、ウェブのサーバ側において、Java技術 (Java EE) は広く使われている。 多くのウェブサイトが、Javaサーブレット (Java Servlet) や JSP(JavaServer Pages)などの Java EE 技術を使って動的にページを生成するウェブを構築している。
https://w.atwiki.jp/johzue/pages/25.html
参考にしたページ http //www.hellohiro.com/ マニュアル Tomcat4.0 ServletAPI(ちょっと古いかな) http //www.jajakarta.org/tomcat/servletapi/servletapi-4.0/docs-ja/index.html JDK5.0 http //java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html Tomcat5.5設定 ApacheもTomcatも無事に連携ができたら、JSPとサーブレットの動作確認 サーブレット デフォルトだと、http //ipaddress/servlets-examples/servlet/HelloWorldExample これでHello World !!とか表示される。 Javaのクラスファイル自体は /usr/local/tomcat5/webapp/servlets-examples/WEB-INF/classes/HelloWorldExample.class に、置かれており http //ipaddress/(ルート)が/usr/local/tomcat5/webapp/ROOTディレクトリに 対応づいており http //ipaddress/servlets-examplesが/usr/local/tomcat5/webapp/servlets-examples/ に対応づいている。 servlet-name HelloWorldServlet /servlet-name servlet-class HelloWorldServlet /servlet-class /servlet servlet-mapping servlet-name HelloWorldServlet /servlet-name url-pattern /servlet/HelloWorldServlet /url-pattern /servlet-mapping /web-app ファイルはclassesフォルダの中にHelloWorldServlet.classを置いて 読み出すときは前述の通り。 web.xmlのinvokeの項目(確か2つある)の コメント部分を解除すると、マッピングを関係なく表示できる。 これはセキュリティのため、公開時は元に戻す(コメント化)する必要がある。 ディレクトリを指定して、その中身を見るにはserver.xmlを init-param param-name listings /param-name param-value true /param-value /init-param trueに変更する必要がある 必要なければやらなくて良い。 jspファイルはマッピング関係なく直接読みにいけばよい 文字化け Debian文字化け DebianではJ2SDKパッケージで日本語文字化けするので、それの対応 cp $JAVA_HOME/jre/lib/fontconfig.Redhat.8.0.properties.src \ $JAVA_HOME/jre/lib/fontconfig.properties コピーしたら、それをviで開いて %s /misc-kochi /-sazanami-/g (kochiの後にスペースが必要) 入力フォームの文字化け(GET) Tomcat5.XからsetCharEncodingメソッドの文字コードの適応がなくなった。 クリの文字コードはUTF-8を使うのがルールらしくて、Tomcatもそれに対応したみたい。 それでもやっぱり、基本EUC-JPで統一したいから tomcatのconfディレクトリにあるserever.xmlの一部を編集しなければならない Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/ 最後にあるuseBodyEncodingForURIの項目を追加すればOK これでGETでとっても文字化けしなくなる 参考:http //www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html Netbeansについて Javaの開発環境といえばElipseだったが、最近はNetBeansがSunのサポートとなってシェアが伸びてきている。 利点:標準でTomcat等がバンドルされており導入が楽 欠点:モジュールが少ない NetBeansのコンパイル文字コード指定 「ツール」→「詳細オプション」→「編集」→「Javaソース」→「デフォルトエンコーディング」で指定 コンパイル時のエンコード指定は 「プロジェクトプロパティ」→「構築」→「コンパイル」の追加のコンパイラオプションで指定 -encoding EUC-JP 参考:http //www.deftrash.com/blog/archives/2006/05/netbeans_1.html
https://w.atwiki.jp/dragon109/pages/25.html
目次 Tomcat 6.0のインストールと環境設定 …とりあえず1から3までは1つにまとまり中。いずれメンテ予定→apache_tomcat アプリケーションの作成と配置 サーブレットの基本 クライアントへの出力(HttpServletResponse) リクエスト情報の取得(HttpServletRequest) Webアプリケーションの設定(web.xmlの設定) クッキーの利用 セッション管理 サーブレット間の連携 データベース接続 フィルタ ユーザー認証
https://w.atwiki.jp/chapati4it/pages/134.html
ハローワールド的な、ブラウザからサーブレットにアクセスして「Hello!! MyServlet!!」と表示するだけのサンプルです。 目次 サーブレット作成 - MyServlet.javaサンプルサーブレットの解説 web.xml編集web.xml - サーブレットの宣言とマッピング追加 ブラウザで確認 コメント サーブレット作成 - MyServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); out.println(" html "); out.println(" head "); out.println(" title Hello!! MyServlet!! /title "); out.println(" /head "); out.println(" body "); out.println(" Hello!! MyServlet!!"); out.println(" /body "); out.println(" /html "); out.flush(); } } サンプルサーブレットの解説 ■ポイント1 - 継承 public class MyServlet extends HttpServlet サーブレットは上のように「HttpServlet」を継承して作ります。 「HttpServlet」はその名の通り、HTTPプロトコルに対応したサーブレットです。 ※HTTPプロトコル=ブラウザでwebサイトを見る時に通常使われるプロトコル ■ポイント2 - HTTPメソッド @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws このサンプルは、HTTPのGETメソッドに対応しています。。 GETメソッド=ブラウザにURLを入力したり、リンクをクリックしたり、method="GET"になっているフォームを送信した時に使われるアクセス方法です。 ブラウザからサーブレットにアクセスすると、doGetメソッドが実行され、「Hello!! MyServlet!!」が表示されます。 その他のHTTPメソッドと、サーブレットのメソッドの関係は以下のようになります。 GETメソッド → doGet POSTメソッド → doPost DELETEメソッド → doDelete PUTメソッド → doPut HEADメソッド → doHead OPTIONSメソッド → doOption TRACEメソッド → doTrace 色々ありますが、普通はdoGetとdoPostしか使わないです。 ■ポイント3 - HTML出力 このサンプルは、サーブレットの中から直接HTMLを出力しています。 サーブレットから直接HTMLを出力するのは推奨されないのですが、まずはサーブレットだけで完結するサンプルということで直接出力してみました。 PrintWriter out = resp.getWriter(); このコードでHttpServletResponseからPrintWriterを取得しています。 out.println(" html "); // 省略 PrintWriterに対して「println」メソッドを使ってHTMLを出力しています。 web.xml編集 web.xml - からっぽ ?xml version="1.0" encoding="ISO-8859-1"? web-app xmlns="http //java.sun.com/xml/ns/javaee" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/javaee http //java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" /web-app まずは空のweb.xmlです。Tomcatインストールディレクトリの「conf/web.xml」をコピーしてきて、 web-app タグの間を全部消しました。 これを以下のように、Tomcatプロジェクトの「WEB-INF/web.xml」に配置します。 web.xml - サーブレットの宣言とマッピング追加 ?xml version="1.0" encoding="ISO-8859-1"? web-app xmlns="http //java.sun.com/xml/ns/javaee" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/javaee http //java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" !-- サーブレットの宣言 -- servlet servlet-name myServlet /servlet-name servlet-class MyServlet /servlet-class /servlet !-- サーブレットとurlのマッピング -- servlet-mapping servlet-name myServlet /servlet-name url-pattern /myservlet /url-pattern /servlet-mapping /web-app web-app タグの間に、サーブレットの宣言と、urlのマッピングを追加します。 サーブレットの宣言 servlet-class には、サーブレットのクラス名をパス名も含めた完全な名前で設定します。 servlet-name には、サーブレットに名前を設定します。ここで設定した名前が、urlマッピングで使用されます。 サーブレットとurlのマッピング servlet-name 、サーブレットの宣言で付けたサーブレットの名前を設定します。 url-pattern には、サーブレットにアクセスするためのURLを設定します。 「/hogehoge」と設定すると、「http //サーバー名/コンテキスト名/hogehoge」にブラウザでアクセスするとサーブレットにアクセスできます。 ※コンテキスト名:Tomcatプロジェクト名=コンテキスト名と設定することが多いですが、設定で別の名前にすることも出来ます。 サーブレットは作っただけではアクセス出来ないので、サーブレットを作る度に宣言とマッピングをする必要があります。 ブラウザで確認 「http //localhost 8080/Tomcat7Test/myservlet」にブラウザからアクセスして、以下のような画面が表示されれば成功です。 その他の#inc(Java/Tomcat/サンプル) コメント 名前
https://w.atwiki.jp/tamotech/pages/33.html
フィルタ フィルタ概要 登場人物javax.servlet.Filterインタフェース javax.servlet.FilterConfigインタフェース javax.servlet.FilterChainインタフェース web.xmlの設定 概要 リクエストおよびレスポンスに対して、リソース(サーブレット、JSP、HTML)での処理の前および後に何らかの処理を行うオブジェクトのこと。 サーブレット2.3から標準の機能となった。 登場人物 javax.servlet.Filterインタフェース フィルタクラスが実装するインタフェース。 init(javax.servlet.FilterConfig)メソッドを実装する。 フィルタが初めて使用されるときに呼び出される。フィルタ処理の初期処理。 doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)を実装する。 フィルタ処理の中身。 destroy()メソッドを実装する。 フィルタが破棄されるときに呼び出される。フィルタ処理の後処理。 javax.servlet.FilterConfigインタフェース Filter#initの引数に指定されるインタフェースで、web.xmlに記述した初期化パラメータを取得する際などに使用する。 getFilterName()メソッド フィルタ名(web.xmlで指定しているもの)を返す。 getInitParameter(String)メソッド 指定した初期化パラメータ名に対応する値を返す。 getInitParameterNames()メソッド web.xmlで指定している初期化パラメータ名をEnumerationで返す。 getServletContext()メソッド 実行されているServletContextオブジェクトを返す。 javax.servlet.FilterChainインタフェース フィルタ処理をチェインして(連続して)呼び出すときに使用される。Filter#doFilterの引数に指定される。 doFilter(ServletRequest, ServletResponse)メソッド フィルタ処理の中身。 web.xmlの設定 filter タグと filter-mapping タグ filter filter-name フィルタ名 /filter-name filter-class フィルタクラス(フルパッケージ) /filter-class /filter filter-mapping filter-name フィルタ名 /filter-name url-pattern /*(とか) /url-pattern /filter-mapping サーブレットの書き方と同じですな。。
https://w.atwiki.jp/solutionlog/pages/37.html
巨大で複雑なアプリケーションをJSFで作る際に必要なタスク アプリケーション全体がアクセスするバックエンドオブジェクトの登録 管理ビーンとモデルビーンをページから参照したときに正しい値でインスタンス化するための設定 アプリケーションのページ遷移を実現するナビゲーションルールの定義 アプリケーションのパッケージング Using Annotations to Configure Managed Beans ビーンアノテーションを使ってJSFアプリケーションを設定する @ManagedBeanをつけると管理ビーンとして登録される 管理ビーンは(ビュー以外の)スコープをアノテーションで指定できる faces-config.xmlで faces-config のmetadata-completeをtrueにすると、起動時にすべてのクラスのアノテーションがスキャンされる アノテーションはコンポーネント、コンバータ、バリデータ、レンダラーに対しても利用可能 Using Managed Bean Scopes ビーンに対して、保持されるスコープを設定できる @ApplicationScoped:すべてのユーザのやりとりにわたって @SessionScoped:複数回のHTTPリクエストにわたって @ViewScoped:単一ページのやりとりにわたって @RequestScoped:単一のHTTPリクエストにわたって @NoneScoped:定義なし @CustomScoped:ユーザ定義の非標準のスコープ @NonScopedにするとビーンは参照されるたびにインスタンス化 管理ビーンから参照される管理ビーンなどに使うといい セッションやアプリケーションスコープにする場合は、ビーンをスレッドセーフにする HTTPリクエスト中だけ存在すればいいなら、リクエストスコープ ページ遷移するまで存在すればいいなら、ビュースコープ 管理ビーンはリクエストが来た時にインスタンスが作られる(lazily) アプリケーション起動時に、アプリケーションスコープの管理ビーンのインスタンスを作成できる(eager) @ManagedBean(eager=true) + @ApplicationScoped Application Configuration Resource File アプリケーション設定ファイルはXML形式で、通常はfaces-config.xml ?xml version="1.0" encoding=’UTF-8’? faces-config version="2.0" xmlns="http //java.sun.com/xml/ns/javaee" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/javaee http //java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" ... /faces-config ローカライズされたメッセージや、遷移ルールなどの管理ビーンアノテーションで利用できないもの 管理ビーンのアノテーション設定をうわがく設定 設定ファイルは複数も可能で、ファイル参照は以下の通り /WEB-INF/libまたは親クラスローダのJARの/META-INF/*faces-config.xml バッケージングして利用する場合 コンテキスト初期化パラメータのjavax.faces.application.CONFIG_FILESでコンマ区切りで指定 巨大なアプリケーションで複数の設定ファイルが必要な場合 /WEB-INF/faces-config.xml シンプルなアプリケーションの場合 アプリケーションに登録された設定情報にアクセスするにはApplicationオブジェクトを使う JSFがサーバ起動時にApplicationをインスタンス化 Ordering of Application Configuration Resource Files アプリケーション設定ファイルが複数ある場合、ロード順が重要になることがある faces-config.xmlの absolute-ordering で、ロード順を絶対指定する others 要素をつけない場合は、指定したファイルのみ有効 faces-config.xmlの ordering で、ロード順を相対指定する before , after others を設定すると、1番先や最後のロード順を指定できる ordering がないものは、あるものよりも後にロード Configuring Beans ページが初めて管理ビーンを参照したときに、@ManagedBeanまたは設定ファイルによって初期化される 管理ビーンの生成機能はアプリケーション設定ファイルの managed-bean で指定 1つの設定ファイルに基づいて生成 ビーンプロパティを追加コードなしでカスタマイズ ビーンが生成された時のビーンプロパティ値を設定ファイルで定義 value でビーンのプロパティをほかの値評価式から設定できる Using the managed-bean Element アプリケーション設定ファイルの managed-bean 要素の内容で管理ビーンは初期化される ページが管理ビーンを参照して、まだインスタンスがないとき managed-bean managed-bean-name UserNumberBean /managed-bean-name managed-bean-class guessNumber.UserNumberBean /managed-bean-class managed-bean-scope session /managed-bean-scope ... /managed-bean Initializing Properties Using the managed-property Element managed-property で初期値が必要なプロパティを設定する property-name :プロパティ名 プロパティ値 value list-entries map-entries null-valu Referencing a Java Enum Type プロパティ値にEnumを指定⇒ value はEnum要素の文字列 Referencing an Initialization Parameter プロパティ値に暗黙オブジェクトの参照を設定 value #{initParam.defaultAreaCode} /value Initializing Map Properties Mapのプロパティの初期化には map-entries を使う map-entries key-class int /key-class value-class java.math.BigDecimal /value-class map-entries map-entry key xxx /key value yyy /value /map-entry /map-entries /map-entries Initializing Array and List Properties 配列やリストのプロパティの初期化には list-entries list-entries value xxx /value null-value/ /list-entries Initializing Managed Bean Properties ほかの管理ビーンを参照するプロパティをもつ管理ビーンを初期化 ビーンの階層を作れる value #{...} /value 参照先のオブジェクトのスコープは参照元より短くならないようにする none - none application - nome, application session - none, application, session request - none, application, session, request,view view - none, application, session, view Initializing Maps and Lists Registering CustomError Messages コンバータやバリデータ向けのカスタムメッセージはアプリケーション起動時に利用可能にする メッセージをFacesContext上にプログラムから登録する アプリケーション設定ファイルにメッセージを定義する application resource-bundle base-name messages /base-name var messages /var /resource-bundle locale-config default-locale ja /default-locale /locale-config /application Using Faces Message to Create a Message bundle = ResourceBundle.getBundle(basename, context.getViewRoot().getLocale()); Referencing Error Messages ページ上ではメッセージを表示するために、 message , messages タグを使う 標準のコンバータやバリデータの標準エラーメッセージ esource-bundle で登録されたメッセージ コンバータやバリデータでキューイングされたエラーメッセージを上かける converterMessage, requiredMessage, validatorMessage 値はリテラル値または、ValueExpression リソースは resource-bundle で定義したものか、ページで f loadBundle で読み込む Registering CustomLocalized StaticText Using Default Validators デフォルトバリデータはすべてのUIInputコンポーネントに適用され、ローカル定義されたバリデータの後に実行される Configuring Navigation Rules 遷移ルールは暗黙的、またはアプリケーション設定ファイルに明示的に設定できる 明示的な設定 navigation-rule :ルール from-view-id :遷移元(なしの場合は全ページが対象。*も利用可) navigation-case :遷移のケースを実行するアクション(from-action)、結果(from-outcome)、遷移先(to-view-id)で指定 Implicit Navigation Rules navigation-rules の設定がない場合に適用される コンポーネントのアクション属性で遷移先を指定する Basic Requirements of a JavaServer Faces Application JSFアプリケーションの最小のWAR構成 web.xml アプリケーション設定ファイル(faces-config.xmlなど) JAR クラス、JSFページ、イメージファイルなど Configuring an ApplicationWith a Web Deployment Descriptor web.xmlのJSF設定項目 JSFリクエストを扱うサーブレット サーブレットマッピン アプリケーション設定ファイル(デフォルト以外の場所に置きたいとき) web.xmlのJSF設定項目(オプション) コンポーネントの状態が保存される場所 クライアントに暗号化された状態を保存 クライアントに圧縮した状態を保存 ページへのアクセス制限 XML検証を有効にするか プロジェクトステージの情報 カスタムオブジェクトの設定 Identifying the Servlet for Lifecycle Processing JSFが実行されるためには、FacesServletが必要 リクエスト処理のライフサイクル管理と、リソースの初期化をする servlet servlet-name FacesServlet /servlet-name servlet-class javax.faces.webapp.FacesServlet /servlet-class /servlet servlet-mapping servlet-name FacesServlet /servlet-name url-pattern /faces/* /url-pattern /servlet-mapping url-patternはパス指定(/faces/*)、拡張子指定(*.faces)が可能 Specifying a Path to an Application Configuration Resource File アプリケーション設定ファイル(複数可能)がデフォルトの場所にないときまたは、faces-config.xmlという名前ではない時 Specifying a Path to an Application Configuration Resource File Configuring Project Stage Including the Classes, Pages, andOther Resources
https://w.atwiki.jp/chapati4it/pages/154.html
Tomcat7でアップロードされたファイルを取得するには、Commons FileUploadを利用します。 Commons FileUploadを利用しない場合、かなり面倒なプログラムを組む必要があると思いますが、Commons FileUploadを使えばかなり簡単にアップロードしたファイルを取得出来ます。 ■目次 前提条件 ライブラリの準備Commons FileUpload Commons IO サンプルアプリweb.xmlの設定 サンプルJSP index.jsp サンプルサーブレット FileUploadSample.javaサンプルサーブレットのポイント サンプルダウンロード コメント(バグ、間違い、こんな情報が欲しい等ありましたら) アンケート(このページの情報はお役に立ちましたか?) 前提条件 Tomcat7 JDK1.6 Commons FileUpload 1.3 Commons IO 2.4 ライブラリの準備 Commons FileUpload http //commons.apache.org/proper/commons-fileupload/ Commons FileUploadを上記のアドレスからダウンロードします。 今回は「commons-fileupload-1.3-bin.zip」をダウンロードしました。 ダウンロード出来たら「commons-fileupload-1.3-bin.zip」の中から「commons-fileupload-1.3.jar」を取り出し、プロジェクトの「/WEB-INF/lib」ディレクトリに配置します。 eclipse等IDEでも「commons-fileupload-1.3.jar」をビルドパスに追加しましょう。 追加しないとコンパイルエラーが出ます。 Commons IO http //commons.apache.org/proper/commons-io/ Commons IOも上記のアドレスからダウンロードしましょう。 今回は「commons-io-2.4-bin.zip」をダウンロードしました。 ダウンロード出来たら「commons-io-2.4-bin.zip」の中から「commons-io-2.4.jar」を取り出し、プロジェクトの「/WEB-INF/lib」ディレクトリに配置します。 こちらはIDEのビルドパスに追加しなくても大丈夫です。Commons FileUploadが内部的に使っているからコンパイルするだけなら不要なのです。 サンプルアプリ web.xmlの設定 ?xml version="1.0" encoding="ISO-8859-1"? web-app xmlns="http //java.sun.com/xml/ns/javaee" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/javaee http //java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" !-- サーブレットの宣言 -- servlet servlet-name FileUploadSample /servlet-name servlet-class FileUploadSample /servlet-class /servlet !-- サーブレットとurlのマッピング -- servlet-mapping servlet-name FileUploadSample /servlet-name url-pattern /up /url-pattern /servlet-mapping /web-app web.xmlは特に代わり映えはしません。 サンプルJSP index.jsp %@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" % html head meta http-equiv="Content-Type" content="text/html; charset=UTF-8" title [Tomcat] ファイルアップロードサンプル。 /title /head body h1 [Tomcat] ファイルアップロードサンプル。 /h1 form method="POST" enctype="multipart/form-data" action="up" ファイル : input type="file" name="upfile" br/ メモ : input type="text" name="note" br/ br/ input type="submit" value="Press" ファイルをアップロードします! /form /body /html ファイルをアップロードする時は、formタグのメソッドを「POST」、enctypeを「multipart/form-data」にします。 JSPファイルになっていますが、JSPである必要性のないJSPファイルになってしまいました。 サンプルサーブレット FileUploadSample.java import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * [Tomcat] ファイルアップロードサンプル。 */ public class FileUploadSample extends HttpServlet { // (1) ファイルアップロードする時は、doPostメソッドを使います。 @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // (2) アップロードファイルを受け取る準備 // ディスク領域を利用するアイテムファクトリーを作成 DiskFileItemFactory factory = new DiskFileItemFactory(); // tempディレクトリをアイテムファクトリーの一次領域に設定 ServletContext servletContext = this.getServletConfig().getServletContext(); factory.setRepository((File) servletContext.getAttribute("javax.servlet.context.tempdir")); // ServletFileUploadを作成 ServletFileUpload upload = new ServletFileUpload(factory); try { // (3) リクエストをファイルアイテムのリストに変換 List FileItem items = upload.parseRequest(request); // アップロードパス取得 String upPath = servletContext.getRealPath("/") + "upload/"; byte[] buff = new byte[1024]; int size = 0; for (FileItem item items) { // (4) アップロードファイルの処理 if (!item.isFormField()) { // ファイルをuploadディレクトリに保存 BufferedInputStream in = new BufferedInputStream(item.getInputStream()); File f = new File(upPath + item.getName()); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f)); while ((size = in.read(buff)) 0) { out.write(buff, 0, size); } out.close(); in.close(); // アップロードしたファイルへのリンクを表示 response.getWriter().print(" a href= "); response.getWriter().print(servletContext.getContextPath() + "/upload/" + item.getName()); response.getWriter().print(" " + item.getName() + " /a "); // (5) フォームフィールド(ファイル以外)の処理 } else { // ここでは処理せず、直接requestからgetParamしてもいいと思います。 } } } catch (FileUploadException e) { // 例外処理 } response.getWriter().flush(); } } サンプルサーブレットのポイント 1.ファイルアップロードする時は、doPostメソッドを使います。 htmlの方でメソッドを「POST」にした場合、Servletで受け取る時は「doPost」になります。 2.アップロードファイルを受け取る準備 特に説明することもないと思います。 オブジェクト作ったり、ファイルの一時領域を設定してます。 3.リクエストをファイルアイテムのリストに変換 List FileItem items = upload.parseRequest(request); ここでリクエストをファイルアイテムのリストに変換しています。 4.アップロードファイルの処理 ここでは、アップロードされたファイルやパラメータの処理を行います。 「FileItem.isFormField()」このメソッドでfalseが返って来たらファイルだと思っていいです。 trueだったら、ファイル以外のフォームフィールドです。 今回行なっているのは、アップロードされたファイルを「/upload/~」にコピーして、コピー先へのリンクを表示する処理です。 5.フォームフィールド(ファイル以外)の処理 ここでは、ファイル以外のフィールドの処理を記述します。 今回は、「フィールド名 値」を表示するだけの簡単な処理にしてあります。 サンプルダウンロード web.xml index.jsp FileUploadSample.java コメント(バグ、間違い、こんな情報が欲しい等ありましたら) 名前 アンケート(このページの情報はお役に立ちましたか?) 順位 選択肢 得票数 得票率 投票 1 今日の晩飯は、カレー 137 (46%) 2 役に立った 52 (18%) 3 ありがとう 22 (7%) 4 お腹の肉が気になる 22 (7%) 5 はらへった 16 (5%) 6 私は神だ!!! 13 (4%) 7 分かりにくい 12 (4%) 8 役に立たない 8 (3%) 9 間違っている 4 (1%) 10 227 3 (1%) 11 3 3 (1%) 12 script /script 2 (1%) 13 わかりやすかったですが、ソースコード箇所のファストビューの情報量を増やしてもらえるともっとみやすかったです。 2 (1%) 14 https //w.atwiki.jp/chapati4it/pages/154.html 1 (0%) その他 投票総数 297